﻿Imports ClasesRestaurante

Public Class FormAdmProductos

    Private metodosProductos As New Producto("", 0, "", Nothing)

    Private Sub FormAdmProductos_Activated(sender As Object, e As System.EventArgs) Handles Me.Activated
        Limpiar()
        cboProductos.Visible = False
    End Sub

    Private Sub FormAdmProductos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Limpiar()
        cboProductos.Visible = False
    End Sub

    Private Sub Limpiar()

        lblPHNombre.Visible = True
        lblPHDescripcion.Visible = True
        lblPHPrecio.Visible = True

        txtNombreProducto.Text = ""
        txtDescripcionProducto.Text = ""
        txtPrecioProducto.Text = ""

        picProducto.Image = Nothing

    End Sub

    Private Sub TextBox_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNombreProducto.GotFocus, txtDescripcionProducto.GotFocus, txtPrecioProducto.GotFocus

        Dim textBox = TryCast(sender, TextBox)

        Select Case textBox.Name
            Case "txtNombreProducto"
                lblPHNombre.Visible = False
            Case "txtDescripcionProducto"
                lblPHDescripcion.Visible = False
            Case "txtPrecioProducto"
                lblPHPrecio.Visible = False
        End Select

    End Sub

    Private Sub TextBox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtNombreProducto.LostFocus, txtDescripcionProducto.LostFocus, txtPrecioProducto.LostFocus

        Dim textBox = TryCast(sender, TextBox)

        Select Case textBox.Name
            Case "txtNombreProducto"
                If textBox.Text.Length = 0 Then
                    lblPHNombre.Visible = True
                End If
            Case "txtDescripcionProducto"
                If textBox.Text.Length = 0 Then
                    lblPHDescripcion.Visible = True
                End If
            Case "txtPrecioProducto"
                If textBox.Text.Length = 0 Then
                    lblPHPrecio.Visible = True
                End If
        End Select

    End Sub
    Private Sub label_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles lblPHNombre.MouseHover, lblPHDescripcion.MouseHover, lblPHPrecio.MouseHover

        Dim label = TryCast(sender, Label)

        Select Case label.Name
            Case "lblPHNombre"
                lblPHNombre.Visible = False
            Case "lblPHDescripcion"
                lblPHDescripcion.Visible = False
            Case "lblPHPrecio"
                lblPHPrecio.Visible = False
        End Select

    End Sub

    Private Sub cboTipoProducto_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboTipoProducto.SelectedValueChanged

        Limpiar()
        CargarComboBox(cboTipoProducto.Text)
        cboProductos.Visible = True

    End Sub

    Private Sub CargarComboBox(ByVal tipoProducto As String)

        cboProductos.Items.Clear()

        For Each KeyValueProducto As KeyValuePair(Of String, Producto) In ProductosRestaurante
            Dim prod As Producto = KeyValueProducto.Value
            If prod.GetType.Name = tipoProducto Then cboProductos.Items.Add(KeyValueProducto.Key)

        Next

    End Sub

    Private Sub cboProductos_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboProductos.SelectedValueChanged

        lblPHNombre.Visible = False
        lblPHDescripcion.Visible = False
        lblPHPrecio.Visible = False

        txtNombreProducto.Text = ProductosRestaurante(cboProductos.Text).NombreProducto
        txtDescripcionProducto.Text = ProductosRestaurante(cboProductos.Text).DescripcionProducto
        txtPrecioProducto.Text = ProductosRestaurante(cboProductos.Text).PrecioProducto
        picProducto.Image = ProductosRestaurante(cboProductos.Text).ImagenProducto

    End Sub

    Private Sub picProducto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles picProducto.Click

        Dim explorador As New OpenFileDialog
        Dim rutaImagen As String = ""

        explorador.Multiselect = False
        explorador.Filter = "PNG files (*.jpg)|*.jpg|All files (*.*)|*.*"

        If explorador.ShowDialog = Windows.Forms.DialogResult.OK Then
            Try
                rutaImagen = explorador.FileName
                picProducto.Image = Image.FromFile(rutaImagen)
            Catch ex As Exception
                MessageBox.Show("No se ha añadido la imagen")
                picProducto.Image = Nothing
                Exit Sub
            End Try

        End If

    End Sub

    Private Sub btnNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevo.Click

        Dim mensaje As String
        mensaje = metodosProductos.ComprobarProducto(txtNombreProducto.Text, txtPrecioProducto.Text, txtDescripcionProducto.Text)

        If mensaje <> "OK" Then
            MessageBox.Show(mensaje, "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        If ProductosRestaurante.ContainsKey(txtNombreProducto.Text) Then
            MessageBox.Show("Ya existe ese producto", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtPrecioProducto.Focus()
            Exit Sub
        End If

        If cboTipoProducto.Text = "Comida" Then
            ProductosRestaurante.Add(txtNombreProducto.Text, New Comida(txtNombreProducto.Text, txtPrecioProducto.Text, txtDescripcionProducto.Text, picProducto.Image))
        End If

        If cboTipoProducto.Text = "Bebida" Then
            ProductosRestaurante.Add(txtNombreProducto.Text, New Bebida(txtNombreProducto.Text, txtPrecioProducto.Text, txtDescripcionProducto.Text, picProducto.Image))
        End If


        If cboTipoProducto.Text = "Complemento" Then
            ProductosRestaurante.Add(txtNombreProducto.Text, New Complemento(txtNombreProducto.Text, txtPrecioProducto.Text, txtDescripcionProducto.Text, picProducto.Image))
        End If

        Limpiar()
        cboProductos.Visible = False

    End Sub

    Private Sub btnModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnModificar.Click

        Dim mensaje As String
        mensaje = metodosProductos.ComprobarProducto(txtNombreProducto.Text, txtPrecioProducto.Text, txtDescripcionProducto.Text)

        If mensaje <> "OK" Then
            MessageBox.Show(mensaje, "ATENCION", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            Exit Sub
        End If

        If ProductosRestaurante.ContainsKey(cboProductos.Text) Then

            ProductosRestaurante.Remove(cboProductos.Text)

            If cboTipoProducto.Text = "Comida" Then
                ProductosRestaurante.Add(txtNombreProducto.Text, New Comida(txtNombreProducto.Text, txtPrecioProducto.Text, txtDescripcionProducto.Text, picProducto.Image))
            End If

            If cboTipoProducto.Text = "Bebida" Then
                ProductosRestaurante.Add(txtNombreProducto.Text, New Bebida(txtNombreProducto.Text, txtPrecioProducto.Text, txtDescripcionProducto.Text, picProducto.Image))
            End If


            If cboTipoProducto.Text = "Complemento" Then
                ProductosRestaurante.Add(txtNombreProducto.Text, New Complemento(txtNombreProducto.Text, txtPrecioProducto.Text, txtDescripcionProducto.Text, picProducto.Image))
            End If

            Limpiar()
            cboProductos.Visible = False

        Else
            MessageBox.Show("No existe el producto a modificar", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtPrecioProducto.Focus()
            Exit Sub
        End If

        Limpiar()
        cboProductos.Visible = False

    End Sub

    Private Sub btnEliminar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnEliminar.Click

        If ProductosRestaurante.ContainsKey(txtNombreProducto.Text) Then

            ProductosRestaurante.Remove(cboProductos.Text)

            Limpiar()
            cboProductos.Visible = False

        Else
            MessageBox.Show("No existe el producto a eliminar", "Atención", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            txtPrecioProducto.Focus()
            Exit Sub
        End If

        Limpiar()
        cboProductos.Visible = False

    End Sub


    'Private Sub txtNombreProducto_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtNombreProducto.KeyDown
    '    If e.KeyCode = Keys.F1 Then
    '        MessageBox.Show("Estamos preparando ayuda")
    '    End If
    'End Sub

    'Private Sub cboTipoProducto_SelectedValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboTipoProducto.SelectedValueChanged
    '    cboProductos.Visible = True
    '    CargarComboBox(cboTipoProducto.Text)

        'Dim diccionarioProductos As Dictionary(Of String, Producto)
        'diccionarioProductos = GestionRestaurante.CargarProductos
        'For i = 0 To diccionarioProductos.Count - 1
        '    If cboTipoProducto.SelectedItem = "Comida" Then
        '        For j = 0 To diccionarioProductos.Count - 1
        '            If diccionarioProductos(j).GetType.Name = cboTipoProducto.SelectedItem Then
        '                cboProductos.Items.Add(diccionarioProductos(j))

        '            End If
        '        Next
        '    ElseIf cboTipoProducto.SelectedItem = "Complemento" Then
        '        For j = 0 To diccionarioProductos.Count - 1
        '            If diccionarioProductos(j).GetType.Name = cboTipoProducto.SelectedItem Then
        '                cboProductos.Items.Add(diccionarioProductos(j))
        '            End If
        '        Next
        '    ElseIf cboTipoProducto.SelectedItem = "Bebida" Then
        '        For j = 0 To diccionarioProductos.Count - 1
        '            If diccionarioProductos(j).GetType.Name = cboTipoProducto.SelectedItem Then
        '                cboProductos.Items.Add(diccionarioProductos(j))
        '            End If
        '        Next
        '    End If
        'Next
    'End Sub

End Class